This page last changed on Oct 09, 2006 by juanca.

Lenguaje de Programación

Un lenguaje de programación permite al usuario crear programas que serán entendidos por el ordenador (directa o indirectamente) con el objetivo de realizar alguna tarea.

A grandes rasgos podemos clasificar los lenguajes de programación en tres categorías: máquina, bajo nivel (ensamblador) y alto nivel.

Lenguaje de máquina

Los lenguajes máquina son aquellos cuyas instrucciones son directamente entendibles por el ordenador sin la necesidad de traducción alguna. Sus instrucciones no son más que ristras de ceros y unos (bits).

Estas especifican la operación a realizar, los registros del procesador y celdas de memoria implicados, etc.

Obviamente, este tipo de lenguajes serán fáciles de comprender para un ordenador pero muy difíciles para el hombre. Esta razón nos lleva a buscar otro lenguaje para comunicarnos con el ordenador.

Lenguaje de bajo nivel (ensamblador)

La programación en lenguaje máquina es difícil, por ello se necesitan lenguajes que permitan simplificar este proceso. Los lenguajes de bajo nivel han sido diseñados para este fin.

Estos lenguajes son generalmente dependientes de la máquina, es decir, dependen de un conjunto de instrucciones específicas del ordenador. Un ejemplo de este tipo de lenguajes es el lenguaje ensamblador. En él, las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos (generalmente, abreviaturas de palabras inglesas). Las palabras mnemotécnicas son mucho más fáciles de recordar que las secuencias de ceros y unos.

Una instrucción típica de ensamblador puede ser: ADD x,y,z Esta instrucción significaría que se deben sumar los números almacenados en las direcciones de memoria x e y, y almacenar el resultado en la dirección z. Pero aún así, a medida que los programas crezcan en tamaño y complejidad, el ensamblador sigue sin ser una buena solución.

Lenguajes de alto nivel

Los lenguajes de alto nivel son aquellos en los que las instrucciones o sentencias son escritas con palabras similares a las de los lenguajes humanos (en la mayoría de los casos, el Inglés). Esto facilita la escritura y comprensión del código al programador.

Existen muchos lenguajes de alto nivel, por citar algunos:

  • ADA
  • BASIC
  • COBOL
  • FORTRAN
  • C
  • Pascal
  • Python
  • Perl
  • Java
  • C#
  • Visual Basic

Los programas escritos en lenguaje de alto nivel no son entendibles directamente por la máquina. Necesitan ser traducidos a instrucciones en lenguaje máquina que entiendan los ordenadores. Los programas que realizan esta traducción se llaman compiladores, y los programas escritos en lenguajes de alto nivel se denominan programas fuente.

Traductor

Un traductor es un programa que lee una secuencia perteneciente a un Lenguaje fuente (Lf) y la traduce a una secuencia en un lenguaje objeto (Lo).

El concepto de traductor resulta familiar si lo asociamos al uso que le damos a esta palabra cotidianamente. Este concepto engloba al Compilador y al Interprete

Ejemplos
  • Ensamblador: convierte programas escritos en lenguaje ensamblador a lenguaje máquina.
  • Procesador de Palabras: Traduce un documento anotado con comandos de formateo a una secuencia en un lenguaje de descripción gráfica. El sistema operativo traduce la secuencia gráfica a comandos de impresora.
  • Impresor Estético (Pretty Printer): traduce el texto de un lenguaje de programación a otro texto en el mismo lenguaje pero formateado de acuerdo a las reglas predefinidas.

Intérprete

Un intérprete es un programa que lee una secuencia en un lenguaje objeto y la "ejecuta" o "evalúa". Es decir, el programa realiza las operaciones descritas en la secuencia de entrada o calcula algún tipo de resultado a partir de la misma. Existen varias formas de ejecutar un programa y una de ellas es a través de un intérprete.

Un intérprete traduce instrucciones de un lenguaje de alto nivel a una forma intermedia la cual es ejecutada. Por el contrario los compiladores traducen instrucciones de alto nivel directamente a lenguaje maquina.

La ventaja de un interprete es que este no necesita pasar por todas las etapas de un compilador para generar lenguaje de maquina, pero este proceso puede ser consumidor de tiempo si el programa es muy grande. Por otro lado el intérprete puede ejecutar inmediatamente programas en lenguajes de alto nivel y por esta razón son utilizados algunas veces para el desarrollo de programas, cuando un programador quiere agregar pequeñas secciones en un momento determinado y probarlas rapidamente (debugging).

Ejemplos:

  • CPU:(Un Intel Pentium) interpreta secuencias escritas en su lenguaje de máquina
    y realiza operaciones de memoria y de entrada salida (comunicación con los dispositivos periféricos).
  • Reproductor MIDI: Lee secuencias de notas musicales escritas en lenguaje MIDI y reproduce la música correspondiente.
  • Las máquinas virtuales de Java y .Net

Compilador

Son programas que traducen código fuente a código objeto. EL compilador deriva su nombre de la manera en que trabaja, buscando en todo el código fuente, recolectando y reorganizando las instrucciones. Un compilador difiere de un intérprete en que el intérprete toma cada línea de código y la analiza y ejecuta mientras que el compilador mira el código por completo.

Los compiladores requieren de un tiempo antes de poder generar un ejecutable, sin embargo los programas creados con compiladores se ejecutan mucho más rápido que un mismo programa ejecutado con un intérprete.

Cada lenguaje de programación de alto nivel (excepto los estrictamente imperativos) viene con un compilador.

Dado que los compiladores traducen código fuente a código objeto, el cual es único para cada tipo de maquina, existen múltiples compiladores para un mismo lenguaje. Por ejemplo lenguaje C tiene un compilador para PC, otro para Apple Macintosh, además existen muchas casa que desarrollan compiladores para una misma plataforma y un mismo lenguaje, por ejemplo Microsoft y Borland tienen sus compiladores propios para lenguaje C.

Fases de un Compilador

Ver Fases de un Compilador



Traductor.GIF (image/gif)
Document generated by Confluence on Oct 04, 2010 11:25